import { Hero } from './hero';
import { Injectable } from '@angular/core';
import { InMemoryDbService, RequestInfo } from 'angular-in-memory-web-api';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class InMemoryDataService implements InMemoryDbService{

  // 在内存中模拟数据库
  createDb() {
      const heroes = [
        { id: 12, name: 'Dr. Nice' },
        { id: 13, name: 'Bombasto' },
        { id: 14, name: 'Celeritas' },
        { id: 15, name: 'Magneta' },
        { id: 16, name: 'RubberMan' },
        { id: 17, name: 'Dynama' },
        { id: 18, name: 'Dr. IQ' },
        { id: 19, name: 'Magma' },
        { id: 20, name: 'Tornado' }
      ]
      return {heroes}
  }

  genId(heroes: Hero[]): number{
      /**
       * ... 可以将数组的[]去掉，变成一个个零散的元素 value1,value2,value3，因为max只支持这样的参数
       * ... 还可以用在 对象中，将...obj放入新的对象中，那么可以将多个属性组合成一个新的对象，这对于利用现有的对象组成新对象很方便
       * 函数表达式如果箭头后面仅仅只有一个值，那么这个就是要返回的值
       *  */
      return heroes.length > 0 ? Math.max(...heroes.map(hero => hero.id)) + 1 : 11
  }

  constructor() { }
}
